package com.example.code2022;

import com.example.algorithm.ETree.TreeNode;

import java.util.HashSet;
import java.util.Set;

/**
 * @author: dangwen
 * @createDate: 2022/4/22
 * 653. 两数之和 IV - 输入 BST
 * 给定一个二叉搜索树 root 和一个目标结果 k，如果 BST 中存在两个元素且它们的和等于给定的目标结果，则返回 true。
 */
public class P653 {
    // 遍历树节点的值，放入set中，使用contains判断是否有符合期望的元素
    Set<Integer> set = new HashSet<>();
    public boolean bySet(TreeNode root, int k ){
        if (root == null){
            return false;
        }
        if (set.contains(k - root.val)){
            return true;
        }
        set.add(root.val);
        return bySet(root.left, k) || bySet(root.right, k);
    }
}
